package com.example.gulimall.product;

import com.alibaba.cloud.seata.GlobalTransactionAutoConfiguration;
import org.mybatis.spring.annotation.MapperScan;
import org.redisson.spring.session.config.EnableRedissonHttpSession;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;


/*
1 使用校验
 1.1 实体类开启校验
 1.2 控制器中开启校验
 1.3 编写全局异常捕获类
   jsr303
   分组校验	@NotBlank(message = "品牌名不能为空" groups=“AddGroup.class”)AddGroup 是自己建的一个空接口
   作用为什么情况下需要校验，例如新增不需要id，修改需要id
   控制器方法的参数注解也要换为validated({AddGroup.class}})
   默认没有指定分组的校验注解@NotBlank将不会在生效

 2 JSR303自定义校验
     编写一个自定义的校验注解
     编写一个自定义的校验器
     关联自定义的校验器和自定义校验注解
 */
/**
 * 3 模板引擎
 * tymeleaf-stater 关闭缓存
 * 静态资源放在static文件夹下可以直接访问
 * 页面放在templates下可以直接访问
 *
 *修改页面实时刷新，不重启服务器
 */
@MapperScan(" com.example.gulimall.product.dao")
@SpringBootApplication(exclude = GlobalTransactionAutoConfiguration.class) //排除seata
@EnableDiscoveryClient
@MapperScan("com/example/gulimall/product/dao")
@EnableRedisHttpSession     //开启springsession
@EnableFeignClients(basePackages ="com.example.gulimall.product.feign")
@ServletComponentScan(basePackages ="com.example.gulimall-product")//druid监控页面是一个servlet，需要让SpingBoot支持servlet
public class GulimallProductApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallProductApplication.class, args);
    }

}
